Skip to content

Conversation

@srtaalej
Copy link
Contributor

@srtaalej srtaalej commented Nov 13, 2025

Summary

This PR adds the app unlink command to the CLI.

Example

$ slack app link
  ✔ Selected team: My Workspace (T0123456)
  ✔ Enter app ID: A999PROD123  # oops, linked wronged app
  ✓ App linked successfully

$ slack app unlink
  ✔ Select app: A999PROD123 (My Workspace - Deployed)
  ⚠️  App (A999PROD123) will be removed from this project
      The app will not be deleted from Slack
      You can re-link it later with 'slack app link'
  ✔ Are you sure? Yes

  ✓ App unlinked from project

Preview

2025-11-27-app-unlink.mov

Requirements

@srtaalej srtaalej self-assigned this Nov 13, 2025
@srtaalej srtaalej requested a review from a team as a code owner November 13, 2025 23:05
@srtaalej srtaalej added enhancement M-T: A feature request for new functionality semver:minor Use on pull requests to describe the release version increment labels Nov 13, 2025
@codecov
Copy link

codecov bot commented Nov 13, 2025

Codecov Report

❌ Patch coverage is 93.50649% with 5 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.73%. Comparing base (8973fda) to head (cac1223).
⚠️ Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
cmd/app/unlink.go 93.33% 3 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #266      +/-   ##
==========================================
+ Coverage   64.58%   64.73%   +0.14%     
==========================================
  Files         212      213       +1     
  Lines       17505    17582      +77     
==========================================
+ Hits        11306    11381      +75     
- Misses       5131     5133       +2     
  Partials     1068     1068              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

zimeg
zimeg previously requested changes Nov 19, 2025
Copy link
Member

@zimeg zimeg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@srtaalej Super nice balance to the changes of the link command! This is working well for me but I'm requesting a few changes below:

  • Inlining the "RunE" logic: As much as possible, I think we'd like to perform most logic within the UnlinkCommandRunE function for quick parsing.
  • Style and outputs: Handfuls of quibble on consistent practices we're working toward but haven't solidified in documentation... I hope these comments are found well and with meaning!
  • Cancelling requests: I noticed unexpected output that's perhaps related to the above points, but we'll want to make sure this case returns as expected too!

Hoping to continue testing this soon! Let me know if I can review more whenever!

Comment on lines +88 to +94
if !proceed {
clients.IO.PrintInfo(ctx, false, "\n%s", style.Sectionf(style.TextSection{
Emoji: "thumbs_up",
Text: "Your app will not be unlinked",
}))
return types.App{}, nil
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚧 issue: The following outputs appear after selecting "no" for me:

? Are you sure you want to unlink this app? No

👍 Your app will not be unlinked


🔓 App Unlinked
   Removed app  from project
   Team:

👁️‍🗨️ suggestion: Let's inline as much as possible to be within UnlinkCommandRunE to avoid jumping between functions!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ This is now resolved:

Image

@mwbrooks mwbrooks changed the title feat: app unlink command feat: add 'app unlink' command Nov 26, 2025
@mwbrooks mwbrooks added this to the Next Release milestone Nov 26, 2025
Copy link
Member

@mwbrooks mwbrooks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Fantastic work on adding your first complete command @srtaalej 👏🏻

🧪 Solid test coverage on this PR and manually testing works well, including edge-cases.

✏️ I left a few minor suggestions. After we bring them in, let's record a small video showing this feature in action.

Comment on lines +88 to +94
if !proceed {
clients.IO.PrintInfo(ctx, false, "\n%s", style.Sectionf(style.TextSection{
Emoji: "thumbs_up",
Text: "Your app will not be unlinked",
}))
return types.App{}, nil
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ This is now resolved:

Image

@mwbrooks mwbrooks requested a review from zimeg November 27, 2025 19:50
@mwbrooks mwbrooks dismissed zimeg’s stale review November 27, 2025 19:51

The changes have been addressed and the reviewer is on vacation - I've confirmed that the changes look good.

@mwbrooks mwbrooks merged commit f768cc2 into main Nov 27, 2025
8 checks passed
@mwbrooks mwbrooks deleted the ale-feat-unlink-cmd branch November 27, 2025 19:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement M-T: A feature request for new functionality semver:minor Use on pull requests to describe the release version increment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants